<?php
/*
 *反射有什么用
 *反射可以用于文档生成,因此可以用他对文件中的类进行扫描，逐个生成描述文档
*/
class mysql{
    function connect($db){
        return "连接到数据库 $db[0]";
    }
}

class sqlproxy{
    private $target;
    function __construct($tar)
    {
        $this->target[] = new $tar();
    }

    function __call($name, $args)
    {
        foreach($this->target as $obj){
            $r = new ReflectionClass($obj);
            if($method = $r->getMethod($name)){
                if($method->isPublic() && !$method->isAbstract()){
                    $sql_res = '';
                    $sql_res .= "方法前拦截记录LOG是正常的 ";
                    $sql_res = $method->invoke($obj,$args);
                    //$method connect()    $obj : mysql  $args : member
                    $sql_res .= "方法后拦截是正常的 \r\n";
                    //生成文档
                    file_put_contents('./sql.txt',$sql_res,FILE_APPEND);
                }
            }
        }
    }
}

$obj = new sqlproxy('mysql');
$obj->connect('member');